#pragma once

#include"Common.h"

namespace Macro
{
	vector<UnitType> UnitTypesOfRace[3];

	void InitializeUnitTypes()
	{
		const UnitType TerranUnitTypes[] = {
			UnitTypes::Terran_Marine,
			UnitTypes::Terran_Ghost,
			UnitTypes::Terran_Vulture,
			UnitTypes::Terran_Goliath,
			UnitTypes::Terran_Siege_Tank_Tank_Mode,
			UnitTypes::Terran_SCV,
			UnitTypes::Terran_Wraith,
			UnitTypes::Terran_Ghost,
			UnitTypes::Terran_Science_Vessel,
			UnitTypes::Terran_Dropship,
			UnitTypes::Terran_Battlecruiser,
			UnitTypes::Terran_Nuclear_Missile,
			UnitTypes::Terran_Firebat,
			UnitTypes::Terran_Medic,
			UnitTypes::Terran_Valkyrie,
			UnitTypes::Terran_Command_Center,
			UnitTypes::Terran_Comsat_Station,
			UnitTypes::Terran_Nuclear_Silo,
			UnitTypes::Terran_Ghost,
			UnitTypes::Terran_Supply_Depot,
			UnitTypes::Terran_Refinery,
			UnitTypes::Terran_Barracks,
			UnitTypes::Terran_Academy,
			UnitTypes::Terran_Factory,
			UnitTypes::Terran_Starport,
			UnitTypes::Terran_Control_Tower,
			UnitTypes::Terran_Science_Facility,
			UnitTypes::Terran_Covert_Ops,
			UnitTypes::Terran_Physics_Lab,
			UnitTypes::Terran_Machine_Shop,
			UnitTypes::Terran_Engineering_Bay,
			UnitTypes::Terran_Armory,
			UnitTypes::Terran_Missile_Turret,
			UnitTypes::Terran_Bunker,
		};


		const UnitType ProtossUnitTypes[] = {
			UnitTypes::Protoss_Corsair,
			UnitTypes::Protoss_Dark_Templar,
			UnitTypes::Protoss_Dark_Archon,
			UnitTypes::Protoss_Probe,
			UnitTypes::Protoss_Zealot,
			UnitTypes::Protoss_Dragoon,
			UnitTypes::Protoss_High_Templar,
			UnitTypes::Protoss_Archon,
			UnitTypes::Protoss_Shuttle,
			UnitTypes::Protoss_Scout,
			UnitTypes::Protoss_Arbiter,
			UnitTypes::Protoss_Carrier,
			UnitTypes::Protoss_Interceptor,
			UnitTypes::Protoss_Reaver,
			UnitTypes::Protoss_Observer,
			UnitTypes::Protoss_Scarab,
			UnitTypes::Protoss_Nexus,
			UnitTypes::Protoss_Robotics_Facility,
			UnitTypes::Protoss_Pylon,
			UnitTypes::Protoss_Assimilator,
			UnitTypes::Protoss_Observatory,
			UnitTypes::Protoss_Gateway,
			UnitTypes::Protoss_Photon_Cannon,
			UnitTypes::Protoss_Citadel_of_Adun,
			UnitTypes::Protoss_Cybernetics_Core,
			UnitTypes::Protoss_Templar_Archives,
			UnitTypes::Protoss_Forge,
			UnitTypes::Protoss_Stargate,
			UnitTypes::Protoss_Fleet_Beacon,
			UnitTypes::Protoss_Arbiter_Tribunal,
			UnitTypes::Protoss_Robotics_Support_Bay,
			UnitTypes::Protoss_Shield_Battery,
		};

		const UnitType ZergUnitTypes[] = {
			UnitTypes::Zerg_Zergling,
			UnitTypes::Zerg_Hydralisk,
			UnitTypes::Zerg_Ultralisk,
			UnitTypes::Zerg_Drone,
			UnitTypes::Zerg_Overlord,
			UnitTypes::Zerg_Mutalisk,
			UnitTypes::Zerg_Guardian,
			UnitTypes::Zerg_Queen,
			UnitTypes::Zerg_Defiler,
			UnitTypes::Zerg_Scourge,
			UnitTypes::Zerg_Infested_Terran,
			UnitTypes::Zerg_Devourer,
			UnitTypes::Zerg_Lurker,
			UnitTypes::Zerg_Infested_Command_Center,
			UnitTypes::Zerg_Hatchery,
			UnitTypes::Zerg_Lair,
			UnitTypes::Zerg_Hive,
			UnitTypes::Zerg_Nydus_Canal,
			UnitTypes::Zerg_Hydralisk_Den,
			UnitTypes::Zerg_Defiler_Mound,
			UnitTypes::Zerg_Greater_Spire,
			UnitTypes::Zerg_Queens_Nest,
			UnitTypes::Zerg_Evolution_Chamber,
			UnitTypes::Zerg_Ultralisk_Cavern,
			UnitTypes::Zerg_Spire,
			UnitTypes::Zerg_Spawning_Pool,
			UnitTypes::Zerg_Creep_Colony,
			UnitTypes::Zerg_Spore_Colony,
			UnitTypes::Zerg_Sunken_Colony,
			UnitTypes::Zerg_Extractor,
		};

		const vector<UnitType> VectorOfTerranUnitTypes(TerranUnitTypes , TerranUnitTypes + sizeof(TerranUnitTypes) / sizeof(UnitType));
		const vector<UnitType> VectorOfProtossUnitTypes(ProtossUnitTypes , ProtossUnitTypes + sizeof(ProtossUnitTypes) / sizeof(UnitType));
		const vector<UnitType> VectorOfZergUnitTypes(ZergUnitTypes , ZergUnitTypes + sizeof(ZergUnitTypes) / sizeof(UnitType));

		UnitTypesOfRace[0] = VectorOfTerranUnitTypes;
		UnitTypesOfRace[1] = VectorOfProtossUnitTypes;
		UnitTypesOfRace[2] = VectorOfZergUnitTypes;
	}
}